Recently, the concept of a so-called Software Defined Network, SDN, has been developed which may be employed to handle data flows through a communication network in a customized manner, where a data flow refers to multiple consecutive data packets sent from a delivering node to a receiving node in a communication session e.g. according to the widely used Internet Protocol, IP. For example, the delivering node may be a content server delivering a media stream and the receiving node may be a consuming node where the received media stream may be played out or stored for later use. The data packets are typically transported over various network nodes, such as routers and switches, which make up an end-to-end transport path through the communication network from the delivering node to the receiving node. Mechanisms and techniques for routing the packets of a data flow from one network node to another, also referred to as forwarding, are well-known in the art which is not necessary to describe here in any detail as such.
In this field, the term “router” is commonly used for a network node that routes data packets according to the so-called IP layer, or layer 3, while the term “switch” is commonly used for a node that forwards data packets according to the so-called link layer, or layer 2. In general, route and forward both basically refer to the operation of identifying a next node for a received data packet and sending the packet thereto. For simplicity, the term forward will be used in this disclosure to represent both forward and route regardless of layer or protocol used.
In this context, so-called service chaining may be employed for handling a particular data flow, which refers to establishing a succession of network functions which are operable to process data packets in the data flow at various points through the communication network. This succession, or “chain”, of network functions has thus been adapted to handle this particular data flow in some desired and/or required manner. The network functions may be implemented as physical appliances at certain network nodes, or as virtual appliances, e.g. by creating a virtual machine or the like for each network function by means of suitable software, which functions operate to process data packets in the data flow at specific network nodes in the communication network. These network functions can thus be seen as a customized network path that may be programmed for this particular data flow in a more or less dynamic manner.
However, in order to decide which network functions are needed for a particular data flow, it is necessary to analyze the data packets therein and possibly also to know the current status of the communication network in terms of traffic load and/or available resources. One way that has been proposed to achieve the above service chaining for a data flow, is to employ a central control function, commonly denoted SDN controller, which analyzes the data packets and configures the network nodes, more or less in real-time, to forward the data packets accordingly towards the necessary network functions in the network. Such a service chaining control function may be implemented as a software plug-in at the SDN controller.
This approach is illustrated in FIG. 1 where a delivering node 100 such as a content server or the like sends data packets to a consumer node 102, thus forming a data flow over a routing path of schematically shown network nodes “N” representing various switches and routers in a communication network 104. An SDN controller 106 analyzes the data packets in the flow and configures a plurality of network functions “NF” at corresponding network nodes N which then operate to process and forward the data packets as required by the SDN controller 106 in real-time, i.e. on a per packet basis.
However, this real-time analysis of packets and central control of the network nodes N is somewhat inefficient. Further, the switches and routers in the network nodes N need to be capable of being programmed by a central controlling entity such as the SDN controller 106, which requires more advanced, thus more expensive, equipment than the simple switches and routers commonly used today. It may thus be required that such hardware functionality is added to virtually all the switches and routers in a network of today to implement the above solution. Such an upgrade of functionality can be quite costly to make, particularly in a communication network where the number of switches and routers is large.
Another possible way that could be more efficient would be to implement some intelligence in the network functions themselves, to make them capable of chaining the needed network functions which in this case would perform this analysis and take decisions about how the data packets of a particular data flow should be processed and forwarded to the next network function. This approach would however be rather costly as well since such intelligence is needed in a great number of network functions requiring large investments in hardware and/or software. It is thus a problem to achieve efficient customized service chaining which is adapted for a particular data flow at reasonable costs and without considerable complexity in the network.